import logging
from logging.handlers import TimedRotatingFileHandler
import time
from datetime import datetime

# 创建日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

# 获取当前日期并设置时间为午夜
now = datetime.now()
midnight = now.replace(hour=0, minute=0, second=0, microsecond=0)
midnight_tuple = midnight.timetuple()
midnight_timestamp = time.mktime(midnight_tuple)

# 创建基于时间轮转的处理器
# 按天进行日志轮转，每天午夜切换新文件，保留3个备份文件
file_handler = TimedRotatingFileHandler(
    'app_timed_rotating.log',
    when='D',  # 按天轮转，可选值还有'S'（秒）、'M'（分钟）、'H'（小时）等
    interval=1,
    backupCount=3,
    encoding='utf-8',
    atTime=midnight_timestamp  # 设置切换时间为午夜
)
file_handler.setLevel(logging.DEBUG)

# 创建格式化器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 添加处理器到日志记录器
logger.addHandler(file_handler)

# 记录日志
for i in range(100):
    logger.debug(f'这是第{i + 1}条DEBUG日志')
    # time.sleep(1)  # 每次记录间隔1秒，方便观察